package com.jimo.basetools.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDateTimeUtils {

    /** yyyy-MM-dd HH:mm:ss */
    public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 将字符串解析为 LocalDateTime
     * @param str 时间类型字符串
     * @param pattern 时间格式，如（"yyyy-MM-dd HH:mm:ss"）
     * @return LocalDateTime
     */
    public static LocalDateTime parse(String str, String pattern) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return LocalDateTime.parse(str, formatter);
    }

    /**
     * 将 LocalDateTime 格式化为指定模式的字符串
     * @param localDateTime 时间
     * @param pattern 时间格式，如（"yyyy-MM-dd HH:mm:ss"）
     * @return 格式化为指定模式的字符串
     */
    public static String format(LocalDateTime localDateTime, String pattern) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return formatter.format(localDateTime);
    }

    /**
     * 比较两个 LocalDateTime 的大小关系
     * @param localDateTime1 时间1
     * @param localDateTime2 时间2
     * @return 0：相等| >0 ：时间1大 | <0 ：时间2大
     */
    public static int compare(LocalDateTime localDateTime1, LocalDateTime localDateTime2) {
        return localDateTime1.compareTo(localDateTime2);
    }

    /**
     * 计算两个 LocalDateTime 之间的时间差（以秒为单位）
     * @param startDateTime 开始时间
     * @param endDateTime 结束时间
     * @return 时间差（以秒为单位）
     */
    public static long duration(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        return java.time.Duration.between(startDateTime, endDateTime).getSeconds();
    }
}
